<?xml version="1.0" ?>

<container xmlns="http://symfony.com/schema/dic/services"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://symfony.com/schema/dic/services https://symfony.com/schema/dic/services/services-1.0.xsd">

    <services>
        <defaults public="false" />

        <service id="security.authentication.guard_handler"
                 class="Symfony\Component\Security\Guard\GuardAuthenticatorHandler"
            >
            <argument type="service" id="security.token_storage" />
            <argument type="service" id="event_dispatcher" on-invalid="null" />
            <argument /> <!-- stateless firewall keys -->
            <call method="setSessionAuthenticationStrategy">
                <argument type="service" id="security.authentication.session_strategy" />
            </call>
        </service>

        <service id="Symfony\Component\Security\Guard\GuardAuthenticatorHandler" alias="security.authentication.guard_handler" />

        <!-- See GuardAuthenticationFactory -->
        <service id="security.authentication.provider.guard"
                 class="Symfony\Component\Security\Guard\Provider\GuardAuthenticationProvider"
                 abstract="true"
            >
            <argument /> <!-- Simple Authenticator -->
            <argument /> <!-- User Provider -->
            <argument /> <!-- Provider-shared Key -->
            <argument /> <!-- User Checker -->
            <argument type="service" id="security.password_encoder" />
        </service>

        <service id="security.authentication.listener.guard"
                 class="Symfony\Component\Security\Guard\Firewall\GuardAuthenticationListener"
                 abstract="true"
            >
            <tag name="monolog.logger" channel="security" />
            <argument type="service" id="security.authentication.guard_handler" />
            <argument type="service" id="security.authentication.manager" />
            <argument /> <!-- Provider-shared Key -->
            <argument /> <!-- Authenticator -->
            <argument type="service" id="logger" on-invalid="null" />
        </service>
    </services>
</container>
